home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1996-02-07 | 1.4 KB | 37 lines |
- Syntax10.Scn.Fnt
- Syntax10i.Scn.Fnt
- StampElems
- Alloc
- 7 Feb 96
- Syntax10m.Scn.Fnt
- MODULE TextLoc; (** SHML 7 Feb 96 /
- (** a LocElems searcher, looking for section headers *)
- IMPORT Fonts, Texts, TextFrames, LocElems;
- PROCEDURE Search(e: LocElems.Elem; t: Texts.Text; VAR sort(*out*): BOOLEAN);
- VAR r: Texts.Reader; ch: CHAR; i: INTEGER; str: ARRAY LocElems.StrLen OF CHAR;
- BEGIN
- Texts.OpenReader(r, t, 0);
- LOOP
- REPEAT Texts.ReadElem(r) UNTIL r.eot OR (r.elem # NIL) & (r.elem IS TextFrames.Parc);
- IF r.eot THEN EXIT END;
- REPEAT Texts.Read(r, ch) UNTIL r.eot OR (ch > " ");
- IF r.eot THEN EXIT END;
- i := -1;
- REPEAT INC(i) UNTIL (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") OR (r.fnt.name[i] = 0X);
- IF (r.fnt.height > Fonts.Default.height) OR (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") THEN
- i := 0;
- WHILE (ch > 0DX) & (i < LocElems.StrLen-1) DO str[i] := ch; INC(i); Texts.Read(r, ch) END;
- str[i] := 0X;
- IF ch <= 0DX THEN (* headers are terminated with a 0DX *)
- IF LocElems.Append(e, str, Texts.Pos(r)-1) THEN EXIT END
- END
- END
- END;
- sort := FALSE
- END Search;
- PROCEDURE Install*;
- BEGIN LocElems.Install("Text", Search)
- END Install;
- END TextLoc.
- TextLoc.Install
-